/*
 * Copyright 2015 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.springframework.xd.spark.streaming.java;

import java.util.Properties;

import org.apache.spark.streaming.api.java.JavaDStream;

import org.springframework.xd.spark.streaming.SparkConfig;

/**
 * @author Ilayaperumal Gopinathan
 * @since 1.1
 */
@SuppressWarnings({"serial"})
public class Logger implements Processor<JavaDStream<String>, JavaDStream<String>> {

	@SparkConfig
	public Properties getSparkConfigProperties() {
		Properties props = new Properties();
		// Any specific Spark configuration properties would go here.
		// These properties always get the highest precedence
		//props.setProperty("spark.master", "local[4]");
		return props;
	}

	@Override
	public JavaDStream<String> process(JavaDStream<String> input) {
		input.foreachRDD(rdd -> {
			rdd.foreachPartition(
					items -> {
						while (items.hasNext()) {
							System.out.println(items.next() + System.lineSeparator());
						}
					});
			return null;
		});
		return null;
	}

}
